import router from './router'
import store from './store'
import {ElMessage} from 'element-plus'
import {getSotrageToken} from '@/utils/storage' // get token from cookie

const whiteList = ['/login'] // no redirect whitelist
//设置前端路由导航守卫（路由跳转前触发）
router.beforeEach(async (to, from, next) => {
  console.log("路由跳转：" + from.path + " to " + to.path)  //控制台输出测试
    // 设置页面标题
  document.title = to.meta.title || ""
  // 用户是否已经登录(本地是否有令牌token)
  const hasToken = getSotrageToken()
  // 若有令牌 token
  if (hasToken) {
    if (to.path === '/login') {
      next({path: '/'}) 
    } else {
      const hasGetUserInfo = store.getters.name
      if (hasGetUserInfo) {
        next()
      } else {
          //获取用户信息（权限等）
        try {
          await store.dispatch('user/getInfo')
          next()
        } catch (error) {
            // 清除token 跳转登录页面
          await store.dispatch('user/resetToken')
          ElMessage.error(error || 'Has Error')
          next(`/login?redirect=${to.path}`)          
        }
      }
    }
  } else {
    // 没有令牌 token

    if (whiteList.indexOf(to.path) !== -1) {
      // 目的路由在白名单中，则直接放行
      next()
    } else {
      // 不在白名单中，则验证登录
      next(`/login?redirect=${to.path}`)     
    }
  }
})

//设置前端路由导航守卫（路由跳转后触发）
router.afterEach(() => {
  // finish progress bar 
})
